package main

import "time"

//一个简单的负载均衡的例子
type Work struct {
	x, y, z int
}

//一个worker的任务
func worker(in <-chan *Work, out chan<- *Work){
	for w := range in{
		w.z = w.x * w.y
		time.Sleep(w.z)
		out <- w
	}
}
//必须保证当一个worker阻塞时其他worker仍能运行。


func Run() {
	in, out := make(chan *Work), make(chan *Work)
	for i := 0; i < NumWorkers; i++ {
		go worker(in, out)
	}
	go sendLotsOfWork(in)
	receiveLotsOfResults(out)
}
//很简单的任务，但如果没有并发机制，你仍然很难这么简单的解决。

//并发使并行成为可能
//这个负载均衡的例子具有很明显的并行和可扩展性。
//Worker数可以非常巨大。
//Go语言的这种并发特征能使开发一个安全的、好用的、可扩展的、并行的软件变得很容易。

//并发简化了同步  没有明显的需要同步的操作。程序的这种设计隐含的实现了同步。




func main() {

}















